package tree

import (
	"fmt"
)

func  main2()  {

	arr :=[]int{2,4,9,32,99,92}	
	root :=NewTree(23)
	for _,val:=range arr{
		insert(root,val)
	}
	preOrder(root)

}

func preOrder(root *Tree)  {
	if root==nil{
		return 
	}
	fmt.Println(root.Data)
	preOrder(root.Left)
	preOrder(root.Right)
}
// 大概还是面向过程编程
func NewTree(data int) *Tree {
	// new是一个函数，不是关键字
	var tree = new(Tree)
	tree.Data = data
	return tree
}
// 很多时候还得使用指针符号
func insert(root *Tree,data int) *Tree {
	if root==nil{
		return NewTree(data)
	}
	if root.Data < data{
		root.Right  = insert(root.Right,data)
	}else{
		root.Left = insert(root.Left,data)
	}
	return root
}


type Tree struct{
	// 使用一个更宽泛的类型
	Data int
	// 必须使用指针
	Left *Tree
	Right *Tree
}